#include<sys/types.h>
#include<sys/ipc.h>
#include<stdio.h>
#include <sys/shm.h>
#include <string.h>

int main(){
	//key_t  实际就是 int
	key_t key;
	int shmid;
	char * buf;

	//1. 生成key
	key = ftok("keytest", 100);
	if(key < 0){
		perror("ftok");
		return 0;
	}
	printf("key=0x%x, %d\n", key, key);

	//2. 在内核空间创建共享内存
	shmid = shmget(key, 512, IPC_CREAT|0666);
	if(shmid < 0){
		perror("shmget");
		return 0;
	}
	printf("shmid=0x%x, %d\n", shmid, shmid);

	//3. 映射共享内存到进程的地址空间, 0表示可读写
	buf = shmat(shmid, NULL, 0);
	if(buf < 0){
		perror("shmat");
		return 0;
	}

	//4. 往共享内存里写入数据
	strcpy(buf, "Hello World");

}
